/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.sorbonne.inf5.yams.vue;

import fr.sorbonne.inf5.yams.controleur.ControleurApplication;
import fr.sorbonne.inf5.yams.properties.BundleTool;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Boite de dialogue permettant la saisie du
 * nom d'un joueur
 * @author Dubos Romain
 * @author Oukherfellah Riad
 */
public class DialogUnJoueur extends JDialog {

    //ELEMENTS
    private JTextField joueur1;
    private JLabel joueur1Label;
    private JButton ok, annuler;
    private JPanel joueur1Pan;
    //NOMS DES ELEMENTS
    public static final String OK = "ok";
    public static final String ANNULER = "annuler";
    public static final String OK_ORDI = "ok_ordi";
    public static final String ANNULER_ORDI = "annuler_ordi";

    /**
     * Constructeur
     * @param parent JFrame parente
     * @param title titre de la fenetre
     * @param modal bloquant ou pas
     */
    public DialogUnJoueur(JFrame parent, String title, boolean modal) {
        super(parent, title, modal);
        this.setSize(300, 130);
        this.setLocation(400, 200);
        this.setResizable(false);
        this.initialiserComponsants();
        this.nommerComposants();
    }

    /**
     * Permet d'afficher la fenetre de dialogue
     * @return true si les champs ont ete remplis
     */
    public void afficherFenetre() {
        this.setVisible(true);
    }

    /**
     * Masque la fenetre de dialogue
     */
    public void cacherFenetre() {
        this.setVisible(false);
        this.nettoyerChamp();
    }

    /**
     * Vide les champs de saisie du nom
     */
    private void nettoyerChamp() {
        this.joueur1.setText("");
    }

    /**
     * Initialise les composants de la fenetre de dialogue
     */
    private void initialiserComponsants() {
        //PANEL DES BOUTONS
        JPanel boutons = new JPanel();
        this.ok = new JButton();
        this.annuler = new JButton();
        boutons.add(this.ok);
        boutons.add(this.annuler);

        //PANEL DU 1ER JOUEUR
        this.joueur1Pan = new JPanel();
        joueur1Pan.setBackground(Color.white);
        this.joueur1Label = new JLabel();
        this.joueur1 = new JTextField(5);
        joueur1Pan.add(this.joueur1Label);
        joueur1Pan.add(this.joueur1);


        this.getContentPane().add(joueur1Pan, BorderLayout.CENTER);
        this.getContentPane().add(boutons, BorderLayout.SOUTH);
    }

    /**
     * Permet de nommer l'ensemble des coposants
     * 
     */
    public final void nommerComposants() {

        this.ok.setText(BundleTool.getBundle().getString("ok"));
        this.annuler.setText(BundleTool.getBundle().getString("annuler"));
        this.joueur1Label.setText(BundleTool.getBundle().getString("saisireNom"));
        joueur1Pan.setBorder(BorderFactory.createTitledBorder(BundleTool.getBundle().getString("joueur1")));
    }

    /**
     * Abonne les boutons ok et annuler
     * @param ctrl
     */
    public void abonnement(ControleurApplication ctrl){
        this.ok.addActionListener(ctrl);
        this.annuler.addActionListener(ctrl);
    }

    /**
     * Permet de connaitre l'etat du champ
     * @return true si le champ est rempli
     */
    public Boolean isChampRemplit() {
        return (this.getNom1() != null) && (!this.getNom1().equals(""));
    }

    /**
     * Renvoie le nom du joueur n°1
     * @return nom
     */
    public String getNom1() {

        return this.joueur1.getText();
    }

    /**
     * Change le titre de la fenetre
     * @param pTitre nouveau titre
     */
    public void setTitre(String pTitre){
        this.setTitle(pTitre);
    }

    /**
     * Action commande pour les boutons de
     * la fenetre de dialogue "solo"
     */
    public void setActionCommandeSolo(){
        this.ok.setActionCommand(OK);
        this.annuler.setActionCommand(ANNULER);
    }

    /**
     * Action commande pour les boutons de
     * la fenetre de dialogue "vs ordi"
     */
    public void setActionCommandeOrdi(){
        this.ok.setActionCommand(OK_ORDI);
        this.annuler.setActionCommand(ANNULER_ORDI);
    }
}
